#include<bits/stdc++.h>
using namespace std;
int a[30],b[30];
int minn=1e9;
int n,k;
bool cmp(int x,int y){//sort用
    return x>y;
}
// 深度优先算法
void dfs(int step,int s){
    if(s>=minn)
        return;//剪枝
    if(s<minn&&step==n+1){    
        minn=s;
        return;//是否比minn小 and 是否倒末枝
    }
    for(int i=1;i<=k;i++){//循环    
        b[i]+=a[step];//向下挖一层
        dfs(step+1,max(s,b[i]));//递归
        b[i]-=a[step];//回溯
    }
}
int main(){
    cin>>n>>k;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    sort(a+1,a+n+1,cmp);
    dfs(1,0);
    cout<<minn;
    return 0;
}
